1  CLEAR 
2  LOMEM: 24576
3  CLEAR 
4  ONERR  GOTO 60100
5 S = 1
7 CL = 1
10 D$ =  CHR$ (4)
20  DIM F$(54): DIM LK$(54): DIM NM$(54): DIM TP$(54): DIM ST$(54)
21  DIM EF$(54)
30  TEXT : PRINT  CHR$ (21): HOME 
50  PRINT D$"PREFIX": INPUT "";CD$
55 CD$ =  MID$ (CD$,1,( LEN (CD$) - 1))
60  PRINT D$;"PR#3"
70  PRINT D$;"PREFIX "CD$
80  GOSUB 63000
85 UU$ = U$:KF =  VAL ( MID$ (UU$,13,5)) / 2:KU =  VAL ( MID$ (UU$,35,5)) / 2:KT =  VAL ( MID$ (UU$,58,5)) / 2:KF$ =  STR$ (KF):KU$ =  STR$ (KU):KT$ =  STR$ (KT):U$ = "Available: " + KF$ + "K     Used: " + KU$ + "K     Total: " + KT$ + "K"
90  HOME : PRINT "ProDOS File Navigator 2.5": PRINT U$: PRINT "--------------------------------------------------------------------------------";
100  HTAB 1: VTAB 22: PRINT "--------------------------------------------------------------------------------";: PRINT "(U)nlock (L)ock (R)ename (D)elete (C)reate L(o)ad (V)iew (E)xecute (B)ack (M)ore";
110  POKE 34,3: POKE 35,21
120  HOME 
130  GOSUB 63000
135  IF N > 54 THEN N = 54
136 UU$ = U$:KF =  VAL ( MID$ (UU$,13,5)) / 2:KU =  VAL ( MID$ (UU$,35,5)) / 2:KT =  VAL ( MID$ (UU$,58,5)) / 2:KF$ =  STR$ (KF):KU$ =  STR$ (KU):KT$ =  STR$ (KT):U$ = "Available: " + KF$ + "K     Used: " + KU$ + "K     Total: " + KT$ + "K"
137  HTAB 1: VTAB 1: POKE 1403,0: POKE 1531,0: PRINT  SPC 80): HTAB 1: VTAB 1: POKE 1403,0: POKE 1531,0: PRINT "ProDOS File Navigator 2.5 - ";CD$: HTAB 1: VTAB 2: POKE 1403,0: POKE 1531,1
138  PRINT  SPC 80): HTAB 1: VTAB 2: POKE 1403,0: POKE 1531,1: PRINT U$;: HTAB 1: VTAB 3: POKE 1403,0: POKE 1531,2: PRINT "--------------------------------------------------------------------------------";: HTAB 1: VTAB 4
139  POKE 1403,0: POKE 1531,3
140  FOR X = 1 TO N
150 LK$(X) =  MID$ (F$(X),1,1):NM$(X) =  MID$ (F$(X),2,15):TP$(X) =  MID$ (F$(X),18,3)
155 EF$(X) =  STR$ ( VAL ( MID$ (F$(X),63,9)))
160  NEXT X
162  FOR X = 1 TO N
164 ST$(X) = LK$(X) + NM$(X) + " " + TP$(X)
166  NEXT X
170  FOR X = 1 TO N
175 H =  INT ((X - 1) / 18):V = X - (H * 18):H = (H + 1) * 21:H = H - 20
180  HTAB H: VTAB V + 3: NORMAL 
181  POKE 1403,H - 1: POKE 1531,V + 2
182  IF X = S THEN  INVERSE 
183  PRINT ST$(X);
185  NORMAL 
190  NEXT X
195  HTAB 1: VTAB 24: POKE 1403,0: POKE 1531,23: PRINT "                                                                       ";
200  HTAB 80: VTAB 24: POKE 1403,79: POKE 1531,23: POKE 2039,32: GET A$: POKE 2039,160
205  IF  ASC (A$) > 96 THEN A$ =  CHR$ ( ASC (A$) - 32)
210  IF A$ =  CHR$ (10) THEN S = S + 1
220  IF A$ =  CHR$ (11) THEN S = S - 1
230  IF A$ =  CHR$ (8) THEN S = S - 18
240  IF A$ =  CHR$ (21) THEN S = S + 18
250  IF S < 1 THEN S = 1
260  IF S > N THEN S = N
262  IF A$ =  CHR$ (11) OR A$ =  CHR$ (10) OR A$ =  CHR$ (8) OR A$ =  CHR$ (21) THEN  GOTO 170
265 N$ = NM$(S) + " ": GOSUB 40000
267  IF A$ = "M" THEN  GOSUB 60200
270  IF A$ = "U" THEN  PRINT D$;"UNLOCK "N$
280  IF A$ = "L" THEN  PRINT D$;"LOCK "N$
290  IF A$ = "D" AND LK$(S) = " " THEN  HTAB 1: VTAB 24: POKE 1403,0: POKE 1531,23: PRINT "Are you sure? (Y/N): ";: GET AA$: IF AA$ = "Y" OR AA$ = "y" THEN  PRINT D$;"DELETE "N$
300  IF A$ = "R" AND LK$(S) = " " THEN  HTAB 1: VTAB 24: POKE 1403,0: POKE 1531,23: PRINT "New File Name: ...............";: HTAB 1: POKE 1403,0: INPUT "New File Name: ";NF$: PRINT D$;"RENAME "N$","NF$
305  IF A$ = "I" THEN  GOSUB 60300
310  IF A$ = "C" THEN  HTAB 1: VTAB 24: POKE 1403,0: POKE 1531,23: PRINT "Name of New Directory: ...............";: HTAB 1: POKE 1403,0: INPUT "Name of New Directory: ";NF$: PRINT D$;"CREATE "NF$
320  IF A$ = "O" AND TP$(S) = "BIN" THEN  PRINT D$;"BLOAD "N$
330  IF A$ = "V" AND TP$(S) = "BIN" AND  VAL (EF$(S)) > 4096 AND  VAL (EF$(S)) < 16000 THEN  PRINT D$;"BLOAD "N$",A$2000": POKE 49232,0: POKE 49234,0: POKE 49239,0: POKE 49247,0: WAIT  - 16384,128: POKE  - 16384,0: POKE  - 16368,0: POKE 49233,0
332  IF A$ = "V" AND TP$(S) = "BIN" AND  VAL (EF$(S)) > 1020 AND  VAL (EF$(S)) < 1030 THEN  GOTO 63200
333  IF A$ = "V" AND TP$(S) = "BIN" AND  VAL (EF$(S)) > 16000 AND  VAL (EF$(S)) < 16400 THEN  GOSUB 60000
335  IF A$ = "V" AND TP$(S) = "TXT" THEN  GOSUB 62000: GOTO 120
340  IF (A$ = "E" OR A$ =  CHR$ (13)) AND TP$(S) <  > "DIR" THEN  PRINT  CHR$ (21): HOME : PRINT D$;"- "N$
350  IF (A$ = "E" OR A$ =  CHR$ (13)) AND TP$(S) = "DIR" THEN  PRINT D$;"PREFIX "N$:CD$ = CD$ + "/" + N$:S = 1
360  IF A$ = "Q" THEN  TEXT : PRINT  CHR$ (21): HOME : NEW 
370  IF A$ = "B" THEN  GOSUB 50000
400  GOTO 120
39999  END 
40000  REM  PROCESS N$
40010  FOR Z =  LEN (N$) TO 1 STEP  - 1
40020  IF  MID$ (N$,Z,1) = " " THEN  NEXT Z
40030 N$ =  MID$ (N$,1,Z)
40040  RETURN 
49999  END 
50000  REM  Back Routine
50010 PD$ = CD$
50020  FOR Y =  LEN (PD$) TO 1 STEP  - 1
50030  IF  MID$ (PD$,Y,1) <  > "/" THEN  NEXT Y
50040 CD$ =  MID$ (PD$,1,(Y - 1))
50050  IF CD$ = "" OR CD$ = "/" THEN  HTAB 1: VTAB 24: POKE 1403,0: POKE 1531,23: INPUT "Prefix: ";CD$
50070  PRINT D$;"PREFIX "CD$
50100 S = 1
51000  RETURN 
60000  PRINT D$;"BLOAD "N$",A$2000"
60010  PRINT  CHR$ (4);"BSAVE /RAM/DHR.TEMP,A$2000,L$2000": PRINT  CHR$ (4);"BSAVE /RAM/JRD.TEMP,A$4000,L$2000": PRINT  CHR$ (4);"BLOAD /RAM/JRD.TEMP,A$2000": PRINT  CHR$ (4);"DELETE /RAM/JRD.TEMP"
60011  PRINT  CHR$ (4);"DELETE /RAM/DHR.TEMP"
60030  POKE 49232,0: POKE 49234,0: POKE 49239,0: POKE 49246,0: WAIT  - 16384,128: POKE  - 16384,0: POKE  - 16368,0: POKE 49233,0
60040  RETURN 
60100 E =  PEEK (222)
60120  IF E = 255 THEN  RESUME 
60140  IF E = 56 THEN  HTAB 1: VTAB 24: POKE 1403,0: POKE 1531,23: PRINT "RESETTING...";: PRINT  CHR$ (4);"PR#7"
60160  RUN 
60200  IF CL = 1 THEN  HTAB 1: VTAB 23: POKE 1403,0: POKE 1531,22: PRINT "(I)nfo (Q)uit                                                             (M)ore";: HTAB 1: VTAB 4: POKE 1403,0: POKE 1531,3:CL = 2: RETURN 
60210  IF CL = 2 THEN  HTAB 1: VTAB 23: POKE 1403,0: POKE 1531,22: PRINT "(U)nlock (L)ock (R)ename (D)elete (C)reate L(o)ad (V)iew (E)xecute (B)ack (M)ore";: HTAB 1: VTAB 4: POKE 1403,0: POKE 1531,3:CL = 1: RETURN 
60300 F$ = F$(S)
60310  HOME : PRINT "Info for "; MID$ (F$,2,15): PRINT 
60320  PRINT "Locked: ";: IF  MID$ (F$,1,1) = "*" THEN  PRINT "Yes"
60330  IF  MID$ (F$,1,1) = " " THEN  PRINT "No "
60340  PRINT "Type: "; MID$ (F$,18,3)
60350  PRINT "Blocks: "; VAL ( MID$ (F$,23,6))
60360  PRINT "Modified: "; MID$ (F$,31,15)
60370  PRINT "Created: "; MID$ (F$,48,15)
60380  PRINT "Bytes: "; VAL ( MID$ (F$,65,7))
60390  PRINT "Subtype: "; MID$ (F$,73,7)
60400  PRINT : PRINT "Press any key to continue."
60410  VTAB 19: INVERSE : PRINT " ": NORMAL : VTAB 19: GET A$: RETURN 
62000 TL =  VAL ( MID$ (F$(S),65,7))
62010  HOME : PRINT D$;"EXEC "N$: FOR XX = 1 TO TL: GET A$: PRINT A$;: NEXT XX
62020 KK =  PEEK ( - 16384)
62030  IF KK > 127 THEN  GOTO 62020
62035 KK =  PEEK ( - 16384)
62040  IF KK < 128 THEN  GOTO 62035
62050  GET A$: HOME : RETURN 
62999  END 
63000  PRINT D$;"OPEN "CD$",TDIR"
63010  PRINT D$;"READ "CD$
63020  INPUT E1$: INPUT E2$: INPUT E3$
63030 N = 0
63040  INPUT F$
63050  IF F$ <  > "" THEN N = N + 1:F$(N) = F$: GOTO 63040
63060  INPUT U$
63070  PRINT D$;"CLOSE"
63075  IF N = 0 THEN N = 1:F$(1) = "!DIRECTORY.EMPTY XXX   9999  11-JAN-11 11:11  11-JAN-11 11:11  9999999 S$=FFFF"
63080  RETURN 
63100  PRINT  CHR$ (4);"BLOAD "F$",A$4000": FOR HH = 0 TO 39: FOR VV = 0 TO 23: VTAB VV + 1:A = ( PEEK (40) + 256 *  PEEK (41)) + HH: POKE A, PEEK (A + 7168 + 8192): NEXT VV: NEXT HH: RETURN 
63200  PRINT  CHR$ (21): TEXT : HOME : POKE 49247,0: GR : POKE  - 16302,0:F$ = N$: GOSUB 63100: WAIT  - 16384,128: POKE  - 16384,0: POKE  - 16368,0: TEXT : HOME : GOTO 30
